textview: Also cancel DnD on ::grab-notify
authorCarlos Garnacho <carlosg@gnome.org>
Sun, 11 Dec 2011 17:25:36 +0000 (18:25 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 23 Feb 2012 21:46:08 +0000 (16:46 -0500)
If a drag operation is about to start when the drag
device is grabbed somewhere else, unset drag start x/y,
otherwise the drag will start anyway.

gtk/gtktextview.c

index 61961ecfe63b0f55a8c5b8778af3ed253e039285..808bdd6a5c70f34f0a6ddd3452a6813203396a39 100644 (file)
@@ -4273,8 +4273,15 @@ gtk_text_view_grab_notify (GtkWidget *widget,
   if (priv->grab_device &&
       gtk_widget_device_is_shadowed (widget, priv->grab_device))
     {
+      if (priv->drag_start_x >= 0)
+        {
+          priv->drag_start_x = -1;
+          priv->drag_start_y = -1;
+        }
+
       gtk_text_view_end_selection_drag (GTK_TEXT_VIEW (widget));
       gtk_text_view_unobscure_mouse_cursor (GTK_TEXT_VIEW (widget));
+      priv->grab_device = NULL;
     }
 }
 
@@ -4575,6 +4582,7 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
                 gtk_widget_get_modifier_mask (widget,
                                               GDK_MODIFIER_INTENT_EXTEND_SELECTION)))
             {
+              priv->grab_device = event->device;
               priv->drag_start_x = event->x;
               priv->drag_start_y = event->y;
               priv->pending_place_cursor_button = event->button;